package br.com.divulgaqui.persistence.daoimpl;

import java.util.List;

import javax.persistence.EntityManager;
import javax.persistence.NoResultException;
import javax.persistence.Query;

import br.com.divulgaqui.entity.ValorEspecificacao;
import br.com.divulgaqui.persistence.dao.JPAGenericDAO;
import br.com.divulgaqui.persistence.dao.ValorEspecificacaoDAO;

public class ValorEspecificacaoDAOImpl extends JPAGenericDAO<ValorEspecificacao> implements ValorEspecificacaoDAO{

	public ValorEspecificacaoDAOImpl(EntityManager entityManager) {
		super(entityManager);		
	}

	@Override
	public ValorEspecificacao pesquisarValorEspecificacao(Long idModelo,Long idEspecificacao) {
		StringBuilder sql = new StringBuilder("from ValorEspecificacao ve \n");		
		sql.append("where ve.modelo.id = "+idModelo+" \n");		
		sql.append("and ve.especificacao.id = "+idEspecificacao);
		Query query = this.getEntityManager().createQuery(sql.toString());
		ValorEspecificacao valorEspecificacao = null;
		try {
			valorEspecificacao = (ValorEspecificacao) query.getSingleResult();
		} catch (NoResultException e) {
			return null;
		}
		return valorEspecificacao;
	}
	
	@Override
	public void excluir(ValorEspecificacao valorEspecificacao) {
		this.getEntityManager().remove(valorEspecificacao);
	}	
	

	@SuppressWarnings("unchecked")
	@Override
	public List<ValorEspecificacao> listarValorEspecificacao(Long idModelo) {
		StringBuilder sql = new StringBuilder("from ValorEspecificacao ve \n");	
		sql.append("left outer join fetch ve.especificacao es \n");
		sql.append("left outer join fetch ve.modelo \n");
		sql.append("where ve.modelo.id = "+idModelo+" \n");		
		sql.append("order by es.campo");
		Query query = this.getEntityManager().createQuery(sql.toString());
		return query.getResultList();	
	}	
}
